home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’96 / Fly Paper / FlyPaper Source / Common Sources / FlyPaperDragUtils.cpp next >
Encoding:
C/C++ Source or Header  |  1996-06-22  |  1.4 KB  |  68 lines  |  [TEXT/CWIE]

  1. #ifndef FLYPAPERDRAGUTILS_H
  2. #include "FlyPaperDragUtils.h"
  3. #endif
  4.  
  5. Boolean    AcceptableFlavor (DragReference dragRef, ItemReference dragItem, short whichFlavor)
  6. {
  7.     FlavorType        type;
  8.     FlavorFlags        flags;
  9.     OSErr            error;
  10.     
  11.     error = GetFlavorType (dragRef, dragItem, whichFlavor, &type);
  12.     if (error)
  13.         throw error;
  14.     
  15.     if ((type == flavorTypeHFS) || (type == flavorTypePromiseHFS) ||
  16.             (type == flavorTypeDirectory))
  17.         return false;
  18.     
  19.     error = GetFlavorFlags (dragRef, dragItem, type, &flags);
  20.     if (error)
  21.         throw error;
  22.         
  23.     if ((flags & kExclusionaryFlavorFlags) == 0)
  24.         return true;
  25.  
  26.     return false;
  27. }
  28.  
  29. static
  30. Boolean AcceptableDragItem (DragReference dragRef, ItemReference dragItem)
  31. {
  32.     unsigned short                numFlavors;
  33.     OSErr                        error;
  34.     
  35.     error = CountDragItemFlavors (dragRef, dragItem, &numFlavors);
  36.     if (error)
  37.         throw error;
  38.         
  39.     for (unsigned short whichFlavor = 1; whichFlavor <= numFlavors; ++whichFlavor) {
  40.         if (AcceptableFlavor (dragRef, dragItem, whichFlavor))
  41.             return true;
  42.     }
  43.     
  44.     return false;
  45. }
  46.  
  47. Boolean    AcceptableDrag (DragReference dragRef)
  48. {
  49.     unsigned short            numItems;
  50.     OSErr                    error;
  51.     
  52.     error = CountDragItems (dragRef, &numItems);
  53.     if (error)
  54.         throw error;
  55.     
  56.     for (unsigned short whichItem = 1; whichItem <= numItems; ++whichItem) {
  57.         ItemReference            dragItem;
  58.         error = GetDragItemReferenceNumber (dragRef, whichItem, &dragItem);
  59.         if (error)
  60.             throw error;
  61.         if (!AcceptableDragItem (dragRef, dragItem))
  62.             return false;
  63.     }
  64.     
  65.     return true;
  66. }
  67.  
  68.